#!/bin/sh
# 
# MYSQL工具方法
# 
# @author liuzy
# @since 2016-07-02

F_debug "F_F" "加载mysql.sh"

### 检查是否已安装MySQL-client
## 参数
# 无
## 返回
# 无
function F_isInstallMysqlClient() {
	F_debug "F_isInstallMysqlClient" "检查是否已安装MySQL-client"
	if [[ `whereis mysql | awk {'print $2'}` = "/usr/lib64/mysql" ]] ; then
		F_return false
	else
		F_return true
	fi
}

# 检查
F_isInstallMysqlClient
if [[ ${F_result} = true ]] ; then
	F_info "MySQL-client已安装。"
else
	F_info "您没有安装MySQL-client，或未配置环境变量。"
fi

### 检查是否已安装MySQL-server
## 参数
# 无
## 返回
# 无
function F_isInstallMysqlServer() {
	F_debug "F_isInstallMysqlServer" "检查是否已安装MySQL-server"
	F_isInstall "mysqld"
	F_return ${F_result}
}

# 检查
F_isInstallMysqlServer
if [[ ${F_result} = true ]] ; then
	F_info "MySQL-server已安装。"
else
	F_info "您没有安装MySQL-server，或未配置服务。"
fi

### MySQL下载根路径
mysqlBasePath="http://mirror.bit.edu.cn/mysql/Downloads"

### 默认MySQL版本号信息
ver4_1="4.1.21-0."
ver5_0="5.6.31-1.linux_"
ver5_1="5.6.31-1.linux_"
ver5_2="5.6.31-1.linux_"
ver5_4="5.6.31-1.linux_"
ver5_5="5.6.31-1.linux_"
ver5_6="5.6.31-1.linux_"
ver6_0="6.0.11-0."

### 获取MySQL-server版本号
## 参数
# $1 版本号 默认5.6
## 返回
# MySQL版本号
function F_getMySQLVersion() {
	F_debug "F_getMySQLVersion" "获取MySQL-server版本号"
	if [[ $1 ]] ; then
		if [ "$1" = "4" ] || [ "$1" = "4.1" ] ; then
			F_return ${ver4_1}
		elif [[ "$1" = "5" ]] ; then
			F_return ${ver5_6}
		elif [[ "$1" = "5.1" ]] ; then
			F_return ${ver5_1}
		elif [[ "$1" = "5.2" ]] ; then
			F_return ${ver5_2}
		elif [[ "$1" = "5.3" ]] ; then
			F_return ${ver5_3}
		elif [[ "$1" = "5.4" ]] ; then
			F_return ${ver5_4}
		elif [[ "$1" = "5.5" ]] ; then
			F_return ${ver5_5}
		elif [[ "$1" = "5.6" ]] ; then
			F_return ${ver5_6}
		elif [[ "$1" = "6" ]] ; then
			F_return ${ver6_0}
		else
			F_return ${ver5_6}
		fi
	else
			F_return ${ver5_6}
	fi
}

### 获取MySQL-server下载地址
## 参数
# $1 版本号 默认5.6
## 返回
# 下载地址
function F_getMySQLServerDlUrl() {
	F_debug "F_getMySQLServerDlUrl" "获取MySQL-server下载地址"
	coreversion=".i386.rpm"
	F_isX64
	if [[ ${F_result} = true ]] ; then
		coreversion=".x86_64.rpm"
	fi
	F_getMySQLVersion $1
	version=${F_result}
	# 返回
	F_return ${mysqlBasePath}"/MySQL-${version:0:3}/MySQL-server-"${version}"glibc2.5"${coreversion}
}

### 下载指定版本MySQL-server到当前目录
## 参数
# $1 版本号
## 返回
# 下载后的文件名
function F_dlMySQLServer() {
	F_debug "F_dlMySQLServer" "下载指定版本MySQL-server到当前目录"
	# 获取MySQL-server下载地址
	F_getMySQLServerDlUrl $1
	# 下载
	wget -c ${F_result}
	if [[ ! -f "${F_result##*/}" ]] ; then
		F_error "文件${F_result##*/}下载失败。"
		exit 1
	fi
	# 返回文件名
	F_return ${F_result##*/}
}

### 安装MySQL-server
## 参数
# $1 版本号
## 返回
# 无
function F_installMySQLServer() {
	F_debug "F_installMySQLServer" "安装MySQL-server"
	# root提示
	if [[ `id -u` != "0" ]] ; then
		F_info "如果您不是root用户，可能没有权限安装。"
	fi
	if [[ `whereis mysql` = "mysql: /usr/lib64/mysql /usr/share/mysql" ]] ; then
		F_info "可能存在自带的MySQL语言包，正偿试卸载。"
		if [[ ! `whereis yum` = "yum:" ]] ; then
			yum -y remove mysql-lib*
		elif [[ ! `whereis apt-get` = "apt-get:" ]] ; then
			apt-get -y remove mysql-lib*
		fi
	fi
	# 下载到当前目录得到文件名
	F_dlMySQLServer $1
	# 安装
	rpm -ivh ${F_result}
}

### 获取MySQL-client下载地址
## 参数
# $1 版本号 默认5.6
## 返回
# 下载地址
function F_getMySQLClientDlUrl() {
	F_debug "F_getMySQLClientDlUrl" "获取MySQL-client下载地址"
	coreversion=".i386.rpm"
	F_isX64
	if [[ ${F_result} = true ]] ; then
		coreversion=".x86_64.rpm"
	fi
	F_getMySQLVersion $1
	version=${F_result}
	# 返回
	F_return ${mysqlBasePath}"/MySQL-${version:0:3}/MySQL-client-"${version}"glibc2.5"${coreversion}
}

### 下载指定版本MySQL-client到当前目录
## 参数
# $1 版本号
## 返回
# 下载后的文件名
function F_dlMySQLClient() {
	F_debug "F_dlMySQLClient" "下载指定版本MySQL-client到当前目录"
	# 获取MySQL-client下载地址
	F_getMySQLClientDlUrl $1
	dlUrl=${F_result}
	# 下载
	wget -c ${dlUrl}
	if [[ ! -f "${dlUrl##*/}" ]] ; then
		F_error "文件${dlUrl##*/}下载失败。"
		exit 1
	fi
	# 返回文件名
	F_return ${dlUrl##*/}
}

### 安装MySQL-client
## 参数
# $1 版本号
## 返回
# 无
function F_installMySQLClient() {
	F_debug "F_installMySQLClient" "安装MySQL-client"
	# root提示
	if [[ `id -u` != "0" ]] ; then
		F_info "您不是root用户，可能没有权限安装。"
	fi
	# 下载到当前目录得到文件名
	F_dlMySQLClient $1
	# 安装
	rpm -ivh ${F_result}
}

